package com.study.d012Components;

import javafx.application.Application;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.OverrunStyle;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;

/**
*@description
*@author xtayhame
*date 2020年3月7日
*version
*since v1.0
*/
public class ToolTip extends Application{
	public static void main(String[] args) {
		launch(args);
	}

	@Override
	public void start(Stage stage) throws Exception {
		AnchorPane anchorPane = new AnchorPane();

		Button b1 = new Button("提示按钮");

		Tooltip tt= new Tooltip();
		tt.setMaxWidth(100);
		//设置换行
		tt.setWrapText(true);
		tt.setText("对不起，你输入的格式错误，请重新输入啦。你这个达克拉水电费懒得理发师那；粉丝福利三分类大副俺的沙发上非,对不起，你输入的格式错误，请重新输入啦。你这个达克拉水电费懒得理发师那；粉丝福利三分类大副俺的沙发上非,对不起，你输入的格式错误，请重新输入啦。你这个达克拉水电费懒得理发师那；粉丝福利三分类大副俺的沙发上非，对不起，你输入的格式错误，请重新输入啦。你这个达克拉水电费懒得理发师那；粉丝福利三分类大副俺的沙发上非s1234567890");

		//绑定提示到某个组件
		//Tooltip.install(b1, tt);
		//给按钮设置tooltip组件
		b1.setTooltip(tt);

		//设置透明度
		tt.setOpacity(0.7);

		//设置文字居中显示
		tt.setTextAlignment(TextAlignment.CENTER);

		//设置文本超过宽度时的显示方式，默认是全部显示
		tt.setTextOverrun(OverrunStyle.ELLIPSIS);

		anchorPane.getChildren().add(b1);

		stage.setScene(new Scene(anchorPane, 400, 500));
		stage.show();


		tt.showingProperty().addListener(new ChangeListener<Boolean>() {
			@Override
			public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
				System.out.println("正在显示....");
			}
		});

		tt.hideOnEscapeProperty().addListener(new ChangeListener<Boolean>() {

			@Override
			public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
				System.out.println("关闭...");
			}
		});

		tt.onShowingProperty().addListener(new InvalidationListener() {
			@Override
			public void invalidated(Observable observable) {
				System.out.println("onShowingProperty......");
			}
		});

		tt.onShownProperty().addListener(new InvalidationListener() {
			@Override
			public void invalidated(Observable observable) {
				System.out.println("onShownProperty......");
			}
		});


		tt.onHiddenProperty().addListener(new InvalidationListener() {
			@Override
			public void invalidated(Observable observable) {
				System.out.println("onHiddenProperty......");
			}
		});
		tt.onHidingProperty().addListener(new InvalidationListener() {
			@Override
			public void invalidated(Observable observable) {
				System.out.println("onHidingProperty......");
			}
		});
	}

}
